//匹配用户拥有得菜单，设置默认的路由方法
import { recusionRouter ,setDefaultRouter} from "../../utils/recurison-router";

//路由 和 根路由
import router,{dynpermission} from "../../router/index";

//系统内全部的菜单
import dynMenu from "../../router/dynMenu"

//用户所拥有的资源
import {getPermission} from "../../api/index"

export default{
    nameSpace:true,//命名空间，也就是给当前文件命名。
    state:{
        permissionList:null//所有权限资源
        ,
        sidebarMenu:[]//导航菜单数组,
        ,
        get currentMenu(){
          //获取侧边导航栏，这样页面刷新的时候会自动取值并且展示高亮。
          return localStorage.getItem("vuex_currentMenu")?localStorage.getItem("vuex_currentMenu"):'';
        }
    },
    getters:{},
    mutations:{
      SET_CURRENTMENU(state,value){
        state.currentMenu = value;
        localStorage.setItem("vuex_currentMenu",value);
      },
        //合并设置权限资源
        SET_PERMISSION(state,routes){
            state.permissionList = routes;
            console.log("state.permissionList");
            console.log(state.permissionList);
        },
        CLEAR_PERMISSION(state){
            state.permissionList = null;//清空权限资源
        },
        SET_MENU(state,menu){
            state.sidebarMenu = menu; //设置导航菜单数组
        },
        CLEAR_MENU(state){
            state.sidebarMenu = [];
        }
    },
    //异步访问处理
     actions:{
         async FETCH_PERMISSION({commit,state}){
            let permissionList=[]
          //   console.log("state");
          //   console.log(store.state.UserToken);
          //   //根据用户的权限来判断用户所拥有的资源权限。
          //   if(store.state.UserToken == 'admin'){
          //      permissionList=[
          //       {
          //       "name":"系统菜单",
          //       "children": [
          //        {
          //          "name":"souye"
          //        },
          //        {
          //          "name":"user",
          //          "children": [
          //           {
          //             "name":"userlist"
          //           }
          //         ]
          //        }
          //      ]
          //    },
          //    {
          //     "name":"订单管理",
          //     "children": [
          //      {
          //        "name":"orderlist"
          //      }
          //    ]
          //  }
          //   ]
          //   }else{
          //      permissionList=[{
          //       "name":"系统菜单",
          //       "children": [
          //        {
          //          "name":"souye"
          //        }
          //      ]
          //    }]
          //   }
         
            permissionList =await getPermission();
            console.log("permissionList--");
            console.log(permissionList.data);
            //当前用户拥有的资源  和 全部的资源匹配返回拥有的资源
            const recurison =  recusionRouter(permissionList.data,dynMenu);
            console.log("recurison:");
            console.log(recurison);
            //将根路由得到,也就是路由的副本，但是最终这个副本成为主路由
             let mainController =  dynpermission.find(v=>v.path=="");

             console.log("mainController");
             console.log(mainController);

             let children = mainController.children;//得到子数组
             console.log("children1:",children);
             children.push(...recurison);//把当前用户拥有的资源添加到当前的根路径下面的子数组。
            
             console.log("children2:",children);
             commit('SET_MENU',children);//设置菜单


             console.log("mainController2",mainController);
             //设置默认的路由
             setDefaultRouter([mainController]);
            
             //初始化路由，就是一开始能够跳转的那个路由
             let initial = router.options.routes;

             console.log("initial");
             console.log(initial);

             router.addRoutes(dynpermission);//把根路由添加到路由中
             console.log("dynpermission");
             console.log(dynpermission);


             console.log("addRoute");

             //设置路由权限
             commit('SET_PERMISSION',[...initial,...dynpermission]);
        }
    }
}
